//
//  main.m
//  C3_循环课后作业
//
//  Created by dllo on 15/10/8.
//  Copyright (c) 2015年 dllo. All rights reserved.
//

#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
    
    // 1. （＊＊）随机产生20个[10 , 100]的正整数，输出这些数以及他们中的最大数
    
//    int a = 0;
//    int ret = 0;
//    int max = 0;
//    while (a < 21) {
//            ret = arc4random()%(100 - 10 + 1) + 10;
//        printf("%d\n", ret);
//        if (ret > max) {
//            max = ret;
//        }
//        a++;
//    }printf("最大数为 %d\n", max);

    // 2. （＊＊）编程将所有“水仙花数”打印出来，并打印其总个数。 “水仙花数”是一个 各个位立方之和等于该整数的三位数。
    
//    int a = 100;
//    int b = 0;
//
//    while (a < 1000) {
//        int i = a / 100;
//        int j = (a % 100) / 10;
//        int k = a % 10;
//        
//        if (i * i * i + j * j * j + k * k * k == a) {
//            printf("%d\n", a);
//   b++;
//        }
//        a++;
//    }
//    printf("共有%d个水仙花数", b);
    
//    int a = 0;
//    for (int i = 1; i < 10; i++) {
//        for (int j = 0; j < 10; j++) {
//            for (int k = 0; k < 10; k++) {
//                if (i * i * i + j * j * j + k * k * k == i * 100 + j * 10 + k) {
//                    printf("%d%d%d\n", i, j, k);
//                    a++;
//                }
//            }
//        }
//    }
//    printf("共有%d个水仙花数", a);
    
    
//    // 3. （＊＊）已知abc+cba = 1333,其中a,b,c均为一位数，编程求出满足条件的a,b,c所有组合
//    
//    for (int a = 0; a < 10; a++) {
//        for (int b = 0; b < 10; b++) {
//            for (int c = 0; c < 10; c++) {
//                if (1333 == a * 100 + b * 10 + c + ( c * 100 + b * 10 + a)) {
//                    printf("%d%d%d\n", a, b, c);
//                }
//            }
//        }
//    }
    
    // 4. （＊＊＊）输入两个数，求最大公约数和最小公倍数。（用两种方法：辗转相除法和普通方法）
//    int m = 0, n = 0;
//    scanf("%d%d", &m, &n);
//    int min = m < n ? m : n;
//    int gcd = 0;
//    for (int i = min; i >= 1; i--) {
//        if (m % i == 0 && n % i == 0) {
//            gcd = i;
//            break;
//        }
//    }
//    printf("%d %d", gcd, m * n / gcd);
    
    // 辗转相除法
    
//    int m = 0, n = 0;
//    scanf("%d%d", &m, &n);
//    int a = m, b = n;
//    while (m % n != 0) {
//        int temp = m % n;
//        m = n;
//        n = temp;
//    }
//    printf("%d %d\n", n, a * b / n);
    
    // 5.	（＊＊＊）一个球从100m高度自由落下，每次落地后反跳回原来高度的一半，再落下，再反弹。求它在第10次落地时，共经过多少米？第10次反弹多高
    
//    float totalDistance = 0;
//    float down = 100;
//    float up = 100 / 2;
//    for (int i = 1; i < 11; i++) {
//        totalDistance += down + up;
//        down = down / 2;
//        up = up / 2;
//    }
//    totalDistance = totalDistance - up * 2;
//    printf("%f up = %.2f", totalDistance, up * 2);
    
    // 6. （＊＊＊＊）输入n，分别用*输出边长为n的实心菱形和空心菱形。
//    例如：n = 3时，输出
    
//    int n = 1;
//    scanf("%d", &n);
//    for (int j = 0; j < 2 * n - 1; j++) {
//        for (int i = 0; i < 2 * n - 1; i++) {
//        printf("*");
//    }
//        printf("\n");
//    }
    

    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    return 0;
}
